﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLLUtilidades;
using BLLTarasca.Reportes;

namespace BLLTarasca
{
    public class BLLReporte: BLLPadre<TarascaDataContext>
    {
        public BLLReporte(TarascaDataContext contexto) : base(contexto) { }
        public BLLReporte() : this(new TarascaDataContext()) { }

        public ReportePorCategorias GenerarReporteDeMovimientos(int idCuenta, int mes, int año)
        {
            ReportePorCategorias reporte = new ReportePorCategorias();
            BLLMovimiento bllMovimiento = new BLLMovimiento(Contexto);
            List<TA_Movimiento> movimientos = bllMovimiento.TraerMovimientos(idCuenta, mes, año);

            if (movimientos.Count == 0)
                reporte.Items = new List<ReporteItemPorCategoria>();
            else
                reporte.Items = (from m in movimientos
                                 where !m.EsIngreso.Value
                                 group m by m.TA_Categoria into g
                                 orderby g.Sum(m => m.Monto) descending
                                 select new ReporteItemPorCategoria()
                                 {
                                     Categoria = g.Key,
                                     Monto = g.Sum(m => m.Monto).Value
                                 }).ToList();

            return reporte;
        }
    }
}
